/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author user
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Calendar;


public class ThreadStopWatch {

    JLabel time;
    JButton jbntStart;
    JButton jbntStop;
    long start;
    boolean running=false;
    JLabel jlab;


    Thread thrd;


    ThreadStopWatch ()
    {
        //создание контейнера верхнего уровня (JFrame)
       //при помощи конструктора
       JFrame jfrm= new JFrame("Secundomer");

       //Установка диспетчера компоновки FlowLayour
       jfrm.setLayout(new FlowLayout());

       //Установка начальник размеров фрейма
       jfrm.setSize(200,100);

       //Завершение программы при закрытии пользователем окна приложения
       jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       //создание компонента верхнего уровня (JFrame)
       final JLabel jlab=new JLabel("Press a button...");

       //Создание кнопок
       final JButton jbntStart=new JButton("Start");
       final JButton jbntStop=new JButton("Stop");

       jbntStop.setEnabled(false);

       Runnable myThread=new Runnable(){

            public void run() {
                try{
                    for(;;){
                        Thread.sleep(100);
                        SwingUtilities.invokeLater(new Runnable()
                        {

                            public void run() {
                                updateTime();
                            }


                        });
                           }
                   }

                catch(InterruptedException exc){
                System.out.println("Error");
                }
            }

       };


    thrd=new Thread(myThread);

    thrd.start();


     //Связывание кнопки Start с обработчиком событий
       jbntStart.addActionListener(new ActionListener()
       {
       public void actionPerformed(ActionEvent ae)
          {
        //Получение текущего системного времени
        start=Calendar.getInstance().getTimeInMillis();

        jbntStop.setEnabled(true);
        jbntStart.setEnabled(false);

        running=true;

       }
       });


       //Связывание кнопки Stop с обработчиком событий
       jbntStop.addActionListener(new ActionListener()
       {
       public void actionPerformed(ActionEvent ae)
          {
           //Получение текущего системного времени
           long stop=Calendar.getInstance().getTimeInMillis();
           //вывод текста JLabel при нажатии кнопки Stop
           jlab.setText("Stop time: "+(double)(stop-start)/1000+" sec.");


           jbntStop.setEnabled(false);
           jbntStart.setEnabled(true);


        running=false;

          }
       });


       //Добавление кнопок в JFrame
       jfrm.add(jbntStart);
       jfrm.add(jbntStop);

       //Включение компонента в состав контейнера
       jfrm.add(jlab);


       //Отображение фрейма
       jfrm.setVisible(true);



}

           void updateTime()
       {

           if (!running) return;
           {
               //Получение текущего системного времени
           long temp=Calendar.getInstance().getTimeInMillis();
           //вывод текста JLabel при нажатии кнопки Stop
           jlab.setText("Stop time: "+(double)(temp-start)/1000+" sec.");

           }

       }


   public static void main(String[] args)
   {
       //Создание фрейма в потоке обработки событий
       SwingUtilities.invokeLater
               (
               new Runnable()
                  {
                  public void run()
                    {
                     new ThreadStopWatch();
                    }
                  }
               );
   }



}
